home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 201-220 / scopedisk202 / bbbbs2 / rexxdoors / grin_du_jour.rexx < prev    next >
OS/2 REXX Batch file  |  1995-03-19  |  1KB  |  41 lines

  1. /* Grin_du_Jour.rexx  - uses micros to pick 1 of 3000 locations */
  2.  
  3. FF='0C'x  /* FormFeed */
  4. CR='0D'x  /* Carraige Return */
  5. SIGNAL ON BREAK_C
  6. SIGNAL ON BREAK_E
  7.  
  8. ARG name .
  9.  
  10. bbspath=GETCLIP('BBS_path')
  11. filename=bbspath'rexxDoors/Data/Grins' /* Formfeed separated text */
  12. size=WORD(STATEF(filename),2)
  13. size=TRUNC(size-(size/3000))             /* allow for last grin */
  14.  
  15. x=OPEN(f,'RAM:DUMMY','W')              /* write to a dummy file */
  16. IF x=0 THEN RETURN(20);
  17. CALL WRITELN(f,'dummy')
  18. CALL CLOSE(f)
  19. micros=WORD(STATEF('RAM:DUMMY'),7)      /* get the microseconds */
  20. location=TRUNC(size*(micros/3000))      /*  0 >= micros < 3000  */
  21.  
  22. x=OPEN(f,filename,'R')
  23. IF x=0 THEN RETURN(10);
  24.  
  25. CALL SEEK(f,location,'B')          /* point to the random place */
  26. line=''
  27. DO WHILE line~=FF & ~EOF(f)      /* find the start (a formfeed) */
  28.   line=READLN(f)
  29. END
  30. line=''
  31. IF ~EOF(f) THEN    /* if EOF then must be right at end. missed! */
  32.   DO WHILE line~=FF & ~EOF(f)       /* otherwise, show the page */
  33.     line=READLN(f)
  34.     IF ~EOF(f) & line~=FF THEN SAY line||CR
  35.   END
  36. BREAK_C:
  37. BREAK_E:
  38. CALL CLOSE(f)
  39. RETURN(0);
  40. EXIT;                          /* a little redundant, so sue me! */
  41.